"""
# -*- coding: utf-8 -*-

Created on 2021/5/31 11:24

@File: create_a_new_renter.py
@Author: LT
@Description: 在http://122.228.156.194:8081/platform_manager/#/TenantManagement下
              新增一个租户的操作，记得要把companyName这里后面加上租户二字来区分
"""
from requests import post
import json
import time


class CreateNewRenter:
    def __init__(self,
                 station_name: '场站 名称',
                 address: '具体 地址',
                 province: '省 份',
                 city: '市 份',
                 county: '县域 比如鹿城区！！！这个应该要让dispatcher来选好regionCode再来填入',
                 regionCode: '县域代码 比如瑞安市应该是330381',
                 streettown: '街道 村镇',
                 longitude: '经 度',
                 latitude: '纬 度',
                 manager: '联系 人',
                 tel: '联系 电话',
                 regisId: '工商注册号 格式为：站点名 + 时间戳',
                 gatewayvender: '网关 厂家',
                 powersupplyarea: '供电 区域',
                 doornumber: '户 号',
                 doorname: '户 名',
                 admin: '管理员 名字',
                 admin_phone: '管理员 电话',
                 admin_email: '管理员 邮箱',
                 **kwargs
                 ):
        renter_name = station_name + kwargs.get('renter_suffix')
        self.create_link = 'https://comp.wzies.com/backend/company/user/inOrUpUser'     # 创建租户的接口
        self.query_link = 'https://comp.wzies.com/backend/company/user/queryUser'       # 查询已创建好的租户参数的接口（查的主库）

        self.headers = {'Content-Type': 'application/json;charset=UTF-8'}  # payload形式必须有请求头表示它是什么类型的，这里用json类型！

        self.create_data = {
            "from": "back",
            "parentId": "user_00000001",  # admin
            "regisId": regisId,                                                     # 不能为空，也不能重复，所以得用一个不重复的数据,还得控制在18位以内
            "contract": manager,
            "contractPhone": tel,
            "provinceCode": "330000",                                               # 省代码，固定为330000
            "cityCode": "330300",                                                   # 市区代码，固定不变为330300
            "regionCode": regionCode,
            "address": address,
            "manager": admin,                                                       # 固定，已在配置文件中给出
            "phone": admin_phone,                                                   # 固定，已在配置文件中给出
            "email": admin_email,                                                   # 固定，已在配置文件中给出
            "operation": "add",
            "roleId": "role_00000004",                                              # 固定
            "accessTypeArr": ["1"],
            "parkType": "1",
            "userId2": "ZJ_001232",                                                 # 这个ID指的是温州市图盛科技有限公司下面的子节点（固定）
            "companyName": renter_name,
            "level": 1,
            "companyId": "comp_00000001",
            "userId": "user_00000001",
            "timestamp": round(time.time())  # 把实时的时间戳放进去
        }

        self.query_data = {
            "parentId": "user_00000001",
            "from": "back",
            "key": renter_name,
            "companyId": "comp_00000001",
            "userId": "user_00000001"
        }
        self.res = self.__create_request()                           # 创建租户的请求结果
        self.params_dict = self.__query_request()                    # 查询主库中刚创建好的租户参数的字典结果

    def __create_request(self):
        res = post(url=self.create_link, data=json.dumps(self.create_data), headers=self.headers)
        res.close()
        return res

    def __query_request(self):
        time.sleep(1)                                           # 等待一秒，为了确保刚创建的租户写进了数据库
        res = post(url=self.query_link, data=json.dumps(self.query_data), headers=self.headers)
        res.close()

        dic = {}
        if str(res.json().get('msg')) == 'SUCCESS':
            content = res.json().get("data")[0]
            dic = dict(
                renter_account=content.get("userName"),
                renter_password=content.get("password"),
                renter_userId=content.get("userId"),
                renter_companyId=content.get("companyId")
            )

        return dic
